package com.oracle.containers.list;

import java.util.LinkedList;

/**
 * @author zhouyanxiang
 * @create 2020-08-2020/8/16-19:27
 * LinkedList  采用双向链表的方式实现的结构存储元素，在对LinkedList进行插入和删除操作的时候
 * 只需要在对应结点上插入或者删除元素就可以了，并将上一个结点元素的下一个结点的指针指向该结点即可，数据改动较小
 * 因此随机插入和删除的效率比较高。
 * 但是在对LinkedList进行随机访问的时候需要从链表头部一直遍历到该节点为止，因此随机访问的效率很慢
 * 除此之外LinkedList还提供了在List接口中未定义的方法，用于操作链表头部和尾部的元素
 * 因此有的时候还可以被当做堆栈、队列或者双向队列使用
 */
public class LinkedListReview {

    public static void main(String[] args) {
        LinkedList<String> linkedList = new LinkedList<>();

        linkedList.add("Tom");
        linkedList.add("Jerry");
        System.out.println(linkedList.size());
        System.out.println(linkedList.get(1));

        linkedList.remove(linkedList.get(1));
        System.out.println(linkedList.size());
        // 区别于ArrayList的一个 点击这个的getFirst()进去可以看到里面的Node，然后再点击Node就可以看到双向链表的情况了
        System.out.println(linkedList.getFirst());

        System.out.println(linkedList.getLast());

    }

}
